Tôi có một vấn đề khá đơn giản nhưng tôi không thể tìm ra giải pháp thanh lịch cho nó.Xác định yếu tố nhỏ nhất và vị trí của nó trong mỗi cột ma trận với Lực đẩy CUDA
Tôi có mã lực đẩy tạo ra c
vectơ có cùng kích thước chứa giá trị. Giả sử mỗi một trong số các vectơ c
này có chỉ mục. Tôi muốn cho mỗi vị trí vector để có được những chỉ số của c
vector có giá là thấp nhất:
Ví dụ:
C0 = (0,10,20,3,40)
C1 = (1,2 ,3 ,5,10)
tôi sẽ nhận được kết quả là vector chứa các chỉ số của C
vector trong đó có giá trị thấp nhất:
result = (0,1 ,1 ,0,1)
tôi đã nghĩ về việc nó sử dụng vòng lặp đẩy zip, nhưng đã đi qua các vấn đề: tôi có thể zip tất cả các c
vectơ và thực hiện một transformatio tùy ý n lấy một tuple và trả về chỉ số giá trị thấp nhất của nó, nhưng:
- Làm cách nào để lặp lại nội dung của bộ dữ liệu?
- Vì tôi hiểu các bộ dữ liệu chỉ có thể lưu trữ tối đa
10
các yếu tố và có thể có nhiều hơn các thành phần10
c
vectơ.
Tôi đã sau đó nghĩ về làm nó theo cách này: Thay vì phải c
vectơ riêng biệt, gắn chúng tất cả trong một vector đơn C
, sau đó tạo ra các khóa tham khảo các vị trí và thực hiện một loại ổn định bởi chính mà sẽ tái hợp vector các mục từ cùng một vị trí với nhau. Trong ví dụ này sẽ cung cấp cho:
C = (0,10,20,3,40,1,2,3,5,10)
keys = (0,1 ,2 ,3,4 ,0,1,2,3,4)
after stable sort by key:
output = (0,1,10,2,20,3,3,5,40,10)
keys = (0,0,1 ,1,2 ,2,3,3,4 ,4)
Sau đó, tạo ra các phím với các vị trí trong vector, zip đầu ra với các chỉ số của c
vectơ và sau đó thực hiện một giảm quan trọng với một functor tùy chỉnh mà cho mỗi đầu ra giảm chỉ số có giá trị thấp nhất. Trong ví dụ:
input = (0,1,10,2,20,3,3,5,40,10)
indexes= (0,1,0 ,1,0 ,1,0,1,0 ,1)
keys = (0,0,1 ,1,2 ,2,3,3,4 ,4)
after reduce by keys on zipped input and indexes:
output = (0,1,1,0,1)
Tuy nhiên, cách viết hàm functor này để giảm hoạt động chính?
Bạn đang thực sự cố gắng để tìm ra chỉ số của phần tử tối thiểu của mỗi cột trong ma trận hàng chính. – kangshiyin