задача SSE2

Тема в разделе "WASM.BEGINNERS", создана пользователем Татьяна, 16 янв 2017.

  1. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Мановар

    Как такое можно давать студентам, даже описав суть задачи(чего небыло - гадайте) не понимаю. Само по себе требование спец компиляции(sse) требует знания результата компиляции, что коррелирует с самим вопросом - студент этого не знает.
     
  2. Мановар

    Мановар Active Member

    Публикаций:
    0
    Регистрация:
    2 дек 2016
    Сообщения:
    143
    Indy_, им давали примеры на лабе, а дальше сами разбирайтесь. А то, что преподы не могут зачастую поставить правильно задачу, так это никого не волнует кроме студентов, хозяин - барин. Но и стъюденты должны мозгами шевелить, не понятно спрашивай, всегда ответят (если препод не м###к). Но для этого в предмете надо разбираться и грамотно вопросы задавать. Я эти программы (c++ с sse) не писал никогда, скачал вчера пару доков (то что ТС привела какой то полубред), почитал, сегодня с утречка сделал.
     
  3. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Мановар,

    Всегда задача должна быть сформулирована чётко. Если это не сделано и нужно доставать хрустальный шар, то задающий вопросы не может сформулировать чётко, но надеется на основе расплывчатого описания что то делать.

    Студентов вообще то обучать нужно, а не делать как в РБ, гнобить, дать не здать зачёт и прочее, с целью получить дальнейший личный профит. Итератор цикла должен быть явно указан. Если конечно не школа волшебства и магии, что скорее всего так судя по корявому тексту на скринах билетов. Скорее всего двинутый старпёр какой то.
     
  4. Мановар

    Мановар Active Member

    Публикаций:
    0
    Регистрация:
    2 дек 2016
    Сообщения:
    143
    Indy_, да никто и не спорит, но сэ ля ви - такова жизнь.
     
  5. Мановар

    Мановар Active Member

    Публикаций:
    0
    Регистрация:
    2 дек 2016
    Сообщения:
    143
    Это называется до конца не разобрался и на.....
    Код (ASM):
    1.  
    2. #include "stdafx.h"
    3. #include "iostream"
    4. #include < emmintrin.h >
    5. int main()
    6. {
    7. const int N = 16;
    8. double k{};
    9. double *A = (double*)_mm_malloc(sizeof(double)*N, 32);
    10. double *B = (double*)_mm_malloc(sizeof(double)*N, 32);
    11. double *C = (double*)_mm_malloc(sizeof(double)*N, 32);
    12. double res_end[N];
    13. for (int i{}; i < N; i++)
    14. {
    15. A[i] = static_cast<double> (3 + i);
    16. B[i] = A[i]; C[i] = A[i];
    17. }
    18. __m128d mass_A, mass_B, mass_C, mass_kub;
    19. for (int i{}; i < N; i += 2)
    20. {
    21. mass_A = _mm_load_pd(&A[i]);
    22. mass_B = _mm_load_pd(&B[i]);
    23. mass_C = _mm_load_pd(&C[i]);
    24. mass_kub = _mm_mul_pd(mass_A, mass_B);
    25. mass_kub = _mm_mul_pd(mass_kub, mass_C);
    26. _mm_store_pd(&res_end[i], mass_kub);
    27. }
    28. for (int i{}; i < N; i++)
    29. k += res_end[i] + 2.;
    30. std::cout << k << std::endl;
    31. _mm_free(A);
    32. _mm_free(B);
    33. _mm_free(C);
    34. system("pause");
    35. }
    36.  
    Кому не нравится заморачиваться с _mm_malloc можно сделать через вектор.