-
Список говнокодов пользователя gorthauer87
Всего: 13
-
0
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
let src1 = r#"
__kernel void add1(__global float* A, __global float* BBB, __global float* B, int m, int n)
{
__local float Blo[64];
int x = get_local_id(0);
int y = get_local_id(1);
int i = get_global_id(0);
int j = get_global_id(1);
int k = get_global_id(2);
i += k / 8;
j += k % 8;
if (i >= n || j >= m) return;
Blo[x * 8 + y] = A[i * m + j];
barrier(CLK_LOCAL_MEM_FENCE);
float BB = 0;
for (int xx = 0; xx < 8; ++xx)
for (int yy = 0; yy < 8; ++yy)
{
float c = (2 * xx + 1) * x * 3.1415926535 / 16;
float cc = (2 * yy + 1) * y * 3.1415926535 / 16;
c = cos(c);
cc = cos(cc);
BB += Blo[xx * 8 + yy] * c * cc;
}
float Ci, Cj;
if (x == 0)
Ci = 1 / 1.4142135623;
else
Ci = 1;
if (y == 0)
Cj = 1 / 1.4142135623;
else
Cj = 1;
B[k * m * n + i * m + j] = Ci * Cj / 4 * BB;
barrier(CLK_LOCAL_MEM_FENCE);
i = get_global_id(0);
j = get_global_id(1);
float summ = 0;
for (int ii = 0; ii < 64; ++ii)
summ += B[ii * m * n + i * m + j];
BBB[i * m + j] = summ / 64;
}
"#;
let pro_que = ProQue::builder().src(src1).dims((hi, wi, 64)).build().unwrap();
let matr11 = Buffer::builder()
.queue(pro_que.queue().clone())
.flags(MemFlags::new().read_only().use_host_ptr())
.dims((hi, wi))
.host_data(&Resr)
.build().unwrap();
let matg11 = Buffer::builder()
.queue(pro_que.queue().clone())
.flags(MemFlags::new().read_only().use_host_ptr())
.dims((hi, wi))
.host_data(&Resg)
.build().unwrap();
...
let mut kernel;
{
let wi = wi as i32;
let hi = hi as i32;
kernel = pro_que.create_kernel("add1").unwrap().arg_buf(&matr11).arg_buf(&resr11).arg_buf(&bor1).arg_scl(wi).arg_scl(hi);
kernel.lws((8, 8)).enq().unwrap();
kernel = pro_que.create_kernel("add1").unwrap().arg_buf(&matg11).arg_buf(&resg11).arg_buf(&bog1).arg_scl(wi).arg_scl(hi);
kernel.lws((8, 8)).enq().unwrap();
kernel = pro_que.create_kernel("add1").unwrap().arg_buf(&matb11).arg_buf(&resb11).arg_buf(&bob1).arg_scl(wi).arg_scl(hi);
kernel.lws((8, 8)).enq().unwrap();
}
Ничего особенного, лаба по opencl, написанная на Rustе
gorthauer87,
24 Февраля 2018
-
+3
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
// on every year that is evenly divisible by 4
// except every year that is evenly divisible by 100
// unless the year is also evenly divisible by 400
pub fn is_leap_year(year: usize) -> bool {
match ((year % 4), (year % 100), (year % 400)) {
(0, 0, 0) => true,
(0, 0, _) => false,
(0, _, _) => true,
(_, _, _) => false,
}
}
Интересный способ использовать сопоставление с образцом.
PS
Добавьте плиз Rust.
gorthauer87,
07 Июня 2016
-
+6
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
// implicit_cast< >
// I believe this was originally going to be in the C++ standard but
// was left out by accident. It's even milder than static_cast.
// I use it instead of static_cast<> to emphasize that I'm not doing
// anything nasty.
// Usage is identical to static_cast<>
template <class OutputClass, class InputClass>
inline OutputClass implicit_cast(InputClass input){
return input;
}
// horrible_cast< >
// This is truly evil. It completely subverts C++'s type system, allowing you
// to cast from any class to any other class. Technically, using a union
// to perform the cast is undefined behaviour (even in C). But we can see if
// it is OK by checking that the union is the same size as each of its members.
// horrible_cast<> should only be used for compiler-specific workarounds.
// Usage is identical to reinterpret_cast<>.
// This union is declared outside the horrible_cast because BCC 5.5.1
// can't inline a function with a nested class, and gives a warning.
template <class OutputClass, class InputClass>
union horrible_union{
OutputClass out;
InputClass in;
};
template <class OutputClass, class InputClass>
inline OutputClass horrible_cast(const InputClass input){
horrible_union<OutputClass, InputClass> u;
// Cause a compile-time error if in, out and u are not the same size.
// If the compile fails here, it means the compiler has peculiar
// unions which would prevent the cast from working.
typedef int ERROR_CantUseHorrible_cast[sizeof(InputClass)==sizeof(u)
&& sizeof(InputClass)==sizeof(OutputClass) ? 1 : -1];
u.in = input;
return u.out;
}
Боль и страдание шаблонного программирования на С++98. Комменты и названия доставляют.
gorthauer87,
11 Марта 2016
-
−99
- 1
- 2
- 3
/*
удалено по просьбе правообладателя
*/
god struct mode on.
Круто, наверное, пытаться её создать на стэке. Всякие if defined в большом количестве тоже доставляют.
Всё, в общем, наелся говна, пишу заявление об увольнении.
gorthauer87,
13 Октября 2015
-
+4
- 1
- 2
- 3
- 4
NDS_U1 946 0.1 0.0 0 0 ? Zl 00:00 0:00 [SCD_Process] <defunct>
NDS_U2 950 4.7 0.0 0 0 ? Zl 00:00 0:27 [MW_Process] <defunct>
NDS_U3 951 3.1 0.0 0 0 ? Zl 00:00 0:18 [APP_Process] <defunct>
NDS_U4 952 0.3 0.0 0 0 ? Zl 00:00 0:02 [CA_Process] <defunct>
Все основные процессы в железке выполняются как зомби, утверждается, что это самый дешевый способ демонизации. Но как-то от него сильно попахивает. По крайней мере, в таком виде если я хочу перезапустить хотя бы один из этих процессов, я должен перезагружать коробку. Да и вообще, разве процесс зомби может что-то делать полезное?
gorthauer87,
12 Октября 2015
-
+3
- 1
- 2
- 3
/*
удалено по просьбе правообладателя
*/
Люблю такое, там ещё реализовано наследование, vtable и прочие радости жизни. Спрашивается, нафига из чистых си делать недоплюсы? Ладно там хотя бы gobject взяли, но лисапед то зачем с треугольными колесами?
gorthauer87,
08 Октября 2015
-
−98
- 1
- 2
- 3
/*
удалено по просьбе правообладателя
*/
Действительно, зачем исправлять некорректный код, достаточно просто тип кастануть к неправильному. Костылеориентированное программирование же.
gorthauer87,
08 Октября 2015
-
+14
- 1
- 2
- 3
/*
удалено по просьбе правообладателя
*/
Думал я, что меня уже так просто не удивишь, пока не увидел ЭТО!
gorthauer87,
24 Сентября 2015
-
−97
- 1
- 2
- 3
/*
удалено по просьбе правообладателя
*/
macro driven development.
Тот же цискоиндуский код.
gorthauer87,
22 Сентября 2015
-
−97
- 1
- 2
- 3
/*
удалено по просьбе правообладателя
*/
Продолжаю пытаться разобраться в цисковском говнокоде. Охреневаю от количества копипасты, дважды охреневаю от того, что эта простыня не автогенеренная, а написанная ручками.
gorthauer87,
22 Сентября 2015