Changes between Initial Version and Version 1 of Ticket #3336
- Timestamp:
- 2015-05-26T11:07:44Z (10 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Ticket #3336 – Description
initial v1 4 4 {{{#!mo 5 5 package ParArg 6 7 6 constant Integer nx = 10; 7 8 8 function mult 9 9 input Real a; … … 25 25 function multParArg 26 26 input Real a; 27 parglobal input Real m [nx];28 parglobal output Real result[nx];27 parglobal input Real mpm[nx]; 28 parglobal output Real mpresult[nx]; 29 29 protected 30 30 parglobal Real pa; … … 32 32 pa := a; 33 33 parfor i in 1:nx loop 34 result[i] :=m[i]*pa;34 mpresult[i] := mpm[i]*pa; 35 35 end parfor; 36 36 end multParArg; … … 43 43 Real pm[nx]; 44 44 algorithm 45 result := mult( 10,m);45 result := mult(a,m); 46 46 end Test; 47 47 … … 51 51 protected 52 52 Real m[nx] = {i for i in 1:nx}; 53 parglobal Real pa; 53 54 parglobal Real pm[nx]; 54 55 parglobal Real presult[nx]; 55 56 algorithm 57 pa := a; 56 58 pm := m; 57 presult := multParArg( 10,m);59 presult := multParArg(pa,pm); 58 60 result := presult; 59 61 end TestParArg; … … 81 83 Here is the result, showing how the second test using parallel variables as argument fails (probably due to wrong code generated): 82 84 {{{#!bash 83 $ omc ParArg.mos84 true85 ""86 true87 ""88 true89 ""90 :Using flags -I"/home/gusth/src/OpenModelica/build/include/omc/c/"91 OpenCL initialization : 2262.165000 ms92 Kernel Execution : 0.937000 ms93 {10.0,20.0,30.0,40.0,50.0,60.0,70.0,80.0,90.0,100.0}94 ""95 85 Error processing file: ParArg.mos 96 Error: Error building simulator. Build log: g++ -I"/home/gusth/src/OpenModelica/build/include/omc/c" -fPIC -O0 -falign-functions -march=native -c -o ParArg_TestParArg.o ParArg_TestParArg.c 86 Error: Error building simulator. Build log: g++ -I"/home/gustaf/src/OpenModelica/build/include/omc/c" -fPIC -O0 -march=native -c -o ParArg_TestParArg.o ParArg_TestParArg.c 87 ParArg_TestParArg.c: In function ‘real_array omc_ParArg_TestParArg(threadData_t*, modelica_real)’: 88 ParArg_TestParArg.c:41:66: error: could not convert ‘_pm’ from ‘device_real_array {aka dev_arr}’ to ‘real_array {aka base_array_s}’ 89 copy_real_array_data(omc_ParArg_multParArg(threadData, _pa, _pm), &_presult); 90 ^ 97 91 ParArg_TestParArg.c: In function ‘device_real_array omc_ParArg_multParArg(threadData_t*, modelica_real, real_array)’: 98 ParArg_TestParArg.c:1 39:52: error: call of overloaded ‘ocl_set_kernel_arg(_cl_kernel*&, int&, void*&)’ is ambiguous99 ocl_set_kernel_arg(tmp4, parfor_1_arg_nr, _m .data); ++parfor_1_arg_nr;100 ^101 ParArg_TestParArg.c:1 39:52: note: candidates are:92 ParArg_TestParArg.c:142:54: error: call of overloaded ‘ocl_set_kernel_arg(_cl_kernel*&, int&, void*&)’ is ambiguous 93 ocl_set_kernel_arg(tmp4, parfor_1_arg_nr, _mpm.data); ++parfor_1_arg_nr; 94 ^ 95 ParArg_TestParArg.c:142:54: note: candidates are: 102 96 In file included from ParArg_TestParArg.h:8:0, 103 97 from ParArg_TestParArg.c:1: 104 /home/gust h/src/OpenModelica/build/include/omc/c/ParModelica/explicit/openclrt/omc_ocl_interface.h:84:6: note: void ocl_set_kernel_arg(cl_kernel, int, cl_mem) <near match>98 /home/gustaf/src/OpenModelica/build/include/omc/c/ParModelica/explicit/openclrt/omc_ocl_interface.h:84:6: note: void ocl_set_kernel_arg(cl_kernel, int, cl_mem) <near match> 105 99 void ocl_set_kernel_arg(cl_kernel kernel, int arg_nr, cl_mem in_arg); 106 100 ^ 107 /home/gust h/src/OpenModelica/build/include/omc/c/ParModelica/explicit/openclrt/omc_ocl_interface.h:84:6: note: no known conversion for argument 3 from ‘void*’ to ‘cl_mem {aka _cl_mem*}’108 /home/gust h/src/OpenModelica/build/include/omc/c/ParModelica/explicit/openclrt/omc_ocl_interface.h:88:6: note: void ocl_set_kernel_arg(cl_kernel, int, modelica_integer) <near match>101 /home/gustaf/src/OpenModelica/build/include/omc/c/ParModelica/explicit/openclrt/omc_ocl_interface.h:84:6: note: no known conversion for argument 3 from ‘void*’ to ‘cl_mem {aka _cl_mem*}’ 102 /home/gustaf/src/OpenModelica/build/include/omc/c/ParModelica/explicit/openclrt/omc_ocl_interface.h:88:6: note: void ocl_set_kernel_arg(cl_kernel, int, modelica_integer) <near match> 109 103 void ocl_set_kernel_arg(cl_kernel kernel, int arg_nr, modelica_integer in_arg); 110 104 ^ 111 /home/gust h/src/OpenModelica/build/include/omc/c/ParModelica/explicit/openclrt/omc_ocl_interface.h:88:6: note: no known conversion for argument 3 from ‘void*’ to ‘modelica_integer {aka long int}’112 ParArg_TestParArg.c:14 0:48: error: ‘real_array’ has no member named ‘info_dev’113 ocl_set_kernel_arg(tmp4, parfor_1_arg_nr, _m .info_dev); ++parfor_1_arg_nr;114 ^105 /home/gustaf/src/OpenModelica/build/include/omc/c/ParModelica/explicit/openclrt/omc_ocl_interface.h:88:6: note: no known conversion for argument 3 from ‘void*’ to ‘modelica_integer {aka long int}’ 106 ParArg_TestParArg.c:143:50: error: ‘real_array’ has no member named ‘info_dev’ 107 ocl_set_kernel_arg(tmp4, parfor_1_arg_nr, _mpm.info_dev); ++parfor_1_arg_nr; 108 ^ 115 109 ParArg_TestParArg.c: In function ‘void* boxptr_ParArg_multParArg(threadData_t*, modelica_metatype, modelica_metatype)’: 116 ParArg_TestParArg.c:160:45: error: could not convert ‘_result’ from ‘device_real_array {aka dev_arr}’ to ‘base_array_t {aka base_array_s}’ 117 out_result = mmc_mk_modelica_array(_result); 118 ^ 110 ParArg_TestParArg.c:163:49: error: could not convert ‘_mpresult’ from ‘device_real_array {aka dev_arr}’ to ‘base_array_t {aka base_array_s}’ 111 out_mpresult = mmc_mk_modelica_array(_mpresult); 112 ^ 113 ParArg_TestParArg.makefile:18: recipe for target 'ParArg_TestParArg' failed 119 114 make: *** [ParArg_TestParArg] Error 1 120 115